Typically, software deployment is a straightforward process. Target hardware is identified and software is manually or automatically copied to the hardware. In some situations, load balancing is used to deploy an application to multiple servers in order to reduce the burden on any single server.
Installation of software or applications on a server may have unintended consequences. For example, the application may not be appropriate for the server based on the server's performance characteristics. The server may have a large amount of free memory but a slow processer. Deploying an application that requires a fast processor to the server may result in the application running inefficiently. In some embodiments, deploying an application on a server results in the application affecting the network environment, such as by slowing down communication between the servers on the network.
There is currently no way to match the characteristics of the servers with the requirements of the application and therefore applications are inefficiently deployed in a network environment.
Thus, there is a need for a system and method that deploy applications to servers based on criteria provided by a user.